﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DAO_Layer
{
    public abstract class DAOFactory
    {
        public const int MYSQL = 1;
        public const int SQLServer = 2;
        public const int Oracle = 3;

        public static DAOFactory getDAOFactory(int dbType)
        {
            switch (dbType)
            {
                case MYSQL: return new MySqlDAOFactory();
                default: return null;
            }
        }

        public abstract DAO_TipoTrabajador getDaoTipoTrabajador();
        public abstract DAO_Usuarios getDaoUsuario();
        public abstract DAO_Roles getDaoRoles();
        public abstract DAO_Trabajador getDaoTrabajador();
        public abstract DAO_Contrato getDaoContrato();
    }

    public class MySqlDAOFactory : DAOFactory
    {
        public override DAO_TipoTrabajador getDaoTipoTrabajador()
        {
            return new MySqlDaoTipoTrabajador();
        }

        public override DAO_Usuarios getDaoUsuario()
        {
            return new MysqlDaoUsuario();
        }

        public override DAO_Roles getDaoRoles()
        {
            return new MysqlDaoRoles();
        }

        public override DAO_Trabajador getDaoTrabajador()
        {
            return new MySqlDaoTrabajador();
        }

        public override DAO_Contrato getDaoContrato()
        {
            return new MySqlDaoContrato();
        }
    }
}
